//
// Created by hsj on 2022/1/5.
//
#include <iostream>
#include "t_2d_arr_pointer.h"

using namespace std;
const int SIZE_ARR = 2;

//二维数组和指针
void test_2d_arr_pointer(){
    int arr[SIZE_ARR][4]{
            {1,2,3,4},
            {5,6,7,8}
    };
    //    这里获取数组长度：int leng = sizeof arr/sizeof arr[0]，这是正确的方式
//    int leng = sizeof arr/sizeof arr[0];
//    cout<<leng<<endl;//2
    cout<<"array sizeof:"<<sizeof arr<<endl;
    int total = test_2d_arr_count(arr,SIZE_ARR);
    cout<<"total count is:"<<total<<endl;
}
int test_2d_arr_count(int arr[][4],int size){
//    arr作为指针传递，sizeof无法获取数组的长度，只能获取指针(int (*)[4])长度: 4字节或者8字节
//    warning: 'sizeof' on array function parameter 'arr' will return size of 'int (*)[4]' [-Wsizeof-array-argument]
    cout<<"pointer sizeof (return size of 'int (*)[4]'):"<<sizeof arr<<endl;
    int total = 0;
    for (int i = 0;i < size;++i){
        for (int j = 0; j < 4; ++j) {
//           total += arr[i][j];
//           上面代码同下：
             total += *(* (arr + i) + j);
        }
    }
    return total;
}